class Instrument1 {
    public void play() {
        System.out.println("Instrument.play()");
    }

    static void tune(Instrument1 i) {
        i.play();
    }
}

class Wind1 extends Instrument1 {
    public void play() {
        System.out.println("Wind1.play()");
    }

    static void tune(Wind1 i) {
        i.play();
    }
}

public class Upcasting {
    public static void main(String[] args) {
        Wind1 flute = new Wind1();
        Instrument1.tune(flute);
    }
}

/*
向上转型总是安全的，因为是从更具体的类型转为更通用的类型。

在向上转型期间，类接口只能丢失方法，不能获得方法。
这就是为什么编译器允许向上转型，而无须任何显式的转型或其他特殊符号。
 */